﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tibet.Logica.Comandos.ComandoMotorRegla;
using Tibet.Logica.Interfaces.MotorRegla;

namespace Tibet.Logica.FabricaLogica
{
    public abstract class FabricaComandoRegla
    {
        public FabricaComandoRegla()
        {
          
        }
        
        public static ConsultarReglaPorNombreId ObtenerComandoConsultarReglaPorNombreId()
        {
            return new ConsultarReglaPorNombreId();
        }

        /// <summary>
        /// Método asociado al comando Crear
        /// </summary>
        /// <returns>lista de reglas </returns>
        public static ConsultarReglasPorNombre ObtenerComandoConsultarReglasPorNombre()
        {
            return new ConsultarReglasPorNombre();
        }


        public static FabricaComandoRegla ObtenerFabricaConsultarDocumentClase()
        {
            return new FabricaConsultarDocumentClase();
        }

        public static FabricaComandoRegla ObtenerFabricaComandoParsear()
        {
            return new FabricaComandoParsear();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarDocumentEstructura()
        {
            return new FabricaConsultarDocumentEstructura();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarDocumentMetodo()
        {
            return new FabricaConsultarDocumentMetodo();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarEspacioOperadores()
        {
            return new FabricaConsultarEspacioOperadores();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarEspacioParentesis()
        {
            return new FabricaConsultarEspacioOperadores();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarLlaves()
        {
            return new FabricaConsultarLlaves();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarNombreAtributo()
        {
            return new FabricaConsultarNombreAtributo();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarNombreClase()
        {
            return new FabricaConsultarNombreClase();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarNombreInterface()
        {
            return new FabricaConsultarNombreInterface();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarNombreMetodo()
        {
            return new FabricaConsultarNombreMetodo();
        }
        public static FabricaComandoRegla ObtenerFabricaConsultarNombrePaquete()
        {
            return new FabricaConsultarNombrePaquete();
        }
        public static ConsultarComentarioBoilerplate ObtenerFabricaConsultarComentarioBoilerplate()
        {
            return new ConsultarComentarioBoilerplate();
        }

        public abstract IComandoValidarArchivo ObtenerValidarArchivo();
        public abstract IComandoParsear ObtenerComandoParsear();

        public abstract IConsultarNombrePaquete ObtenerConsultarNombrePaqueteMayus();

        public abstract IConsultarNombrePaquete ObtenerConsultarNombrePaqueteMinus();

        public abstract IConsultarDocumentClase ObtenerFabricaConsultarDocumentClaseDobleSlash();

        public abstract IConsultarDocumentClase ObtenerFabricaConsultarDocumentClaseSlashAsterisco();

        public abstract IConsultarDocumentClase ObtenerFabricaConsultarDocumentClaseTripleSlach();

        public abstract IConsultarNombreMetodo ObtenerConsultarNombreMetodoNombre();
       
        public abstract IConsultarNombreMetodo ObtenerConsultarNombreMetodoNombreMetodo();

        
        public abstract IConsultarNombreInterface ObtenerConsultarNombreInterfaceINombreinter();
        
        public abstract IConsultarNombreInterface ObtenerConsultarNombreInterfaceInombreinterface();
      
        public abstract IConsultarNombreInterface ObtenerConsultarNombreInterfaceNombreinter();

        public abstract IConsultarNombreClase ObtenerConsultarNombreClaseMayusNoUnder();
        
        public abstract IConsultarNombreClase ObtenerConsultarNombreClaseMayusSiUnder();
      
        public abstract IConsultarNombreClase ObtenerConsultarNombreClaseMinusNoUnder();
        
        public abstract IConsultarNombreClase ObtenerConsultarNombreClaseMinusSiUnder();

        public abstract IConsultarNombreAtributo ObtenerConsultarNombreAtributoMayuscula();
      
        public abstract IConsultarNombreAtributo ObtenerConsultarNombreAtributoMinuscula();

        public abstract IConsultarLlaves ObtenerConsultarLlavesJuntas();
       
        public abstract IConsultarLlaves ObtenerConsultarLlavesSolas();
        
        public abstract IConsultarLlaves ObtenerConsultarLlavesCompJS();

        public abstract IConsultarLlaves ObtenerConsultarLlavesCompSJ();

        public abstract IConsultarEspacioParentesis ObtenerConsultarEspacioParentesisCEF();
       
        public abstract IConsultarEspacioParentesis ObtenerConsultarEspacioParentesisEX();
        
        public abstract IConsultarEspacioParentesis ObtenerConsultarEspacioParentesisIN();
       
        public abstract IConsultarEspacioParentesis ObtenerConsultarEspacioParentesisSE();

        public abstract IConsultarEspacioOperadores ObtenerFabricaConsultarEspacioOperadoresConEspacio();
      
        public abstract IConsultarEspacioOperadores ObtenerFabricaConsultarEspacioOperadoresSinEspacio();

        public abstract IConsultarDocumentMetodo ObtenerConsultarDocumentMetodoDobleSlash();
      
        public abstract IConsultarDocumentMetodo ObtenerConsultarDocumentMetodoSlashAsterisco();
       
        public abstract IConsultarDocumentMetodo ObtenerConsultarDocumentMetodoTripleSlash();

        public abstract IConsultarDocumentEstructura ObtenerConsultarDocumentEstructuraDobleSlash();
        
        public abstract IConsultarDocumentEstructura ObtenerConsultarDocumentEstructuraSlashAsterisco();
       
        public abstract IConsultarDocumentEstructura ObtenerConsultarDocumentEstructuraTripleSlash();
        
        

        //public abstract ConsultarDocumentEstructuraDobleSlash ObtenerConsultarDocumentEstructuraDobleSlash();
        //public abstract ConsultarDocumentEstructuraSlashAsterisco ObtenerConsultarDocumentEstructuraSlashAsterisco();
        //public abstract ConsultarDocumentEstructuraTripleSlash ObtenerConsultarDocumentEstructuraTripleSlash();
        //public abstract ConsultarDocumentMetodoDobleSlash ObtenerConsultarDocumentMetodoDobleSlash();
        //public abstract ConsultarDocumentMetodoSlashAsterisco ObtenerConsultarDocumentMetodoSlashAsterisco();
        //public abstract ConsultarDocumentMetodoTripleSlash ObtenerConsultarDocumentMetodoTripleSlash();
        //public abstract ConsultarEspacioOperadoresConEspacio ObtenerFabricaConsultarEspacioOperadoresConEspacio();
        //public abstract ConsultarEspacioOperadoresSinEspacio ObtenerFabricaConsultarEspacioOperadoresSinEspacio();
        //public abstract ConsultarEspacioParentesisCEF ObtenerConsultarEspacioParentesisCEF();
        //public abstract ConsultarEspacioParentesisEX ObtenerConsultarEspacioParentesisEX();
        //public abstract ConsultarEspacioParentesisIN ObtenerConsultarEspacioParentesisIN();
        //public abstract ConsultarEspacioParentesisSE ObtenerConsultarEspacioParentesisSE();
        //public abstract ConsultarLlavesJuntas ObtenerConsultarLlavesJuntas();
        //public abstract ConsultarLlavesSolas ObtenerConsultarLlavesSolas();
        //public abstract ConsultarLlavesCompJS ObtenerConsultarLlavesCompJS();
        //public abstract ConsultarLlavesCompSJ ObtenerConsultarLlavesCompSJ();
        //public abstract ConsultarNombreAtributoMayuscula ObtenerConsultarNombreAtributoMayuscula();
        //public abstract ConsultarNombreAtributoMinuscula ObtenerConsultarNombreAtributoMinuscula();
        //public abstract ConsultarNombreClaseMayusNoUnder ObtenerConsultarNombreClaseMayusNoUnder();
        //public abstract ConsultarNombreClaseMayusSiUnder ObtenerConsultarNombreClaseMayusSiUnder();
        //public abstract ConsultarNombreClaseMinusNoUnder ObtenerConsultarNombreClaseMinusNoUnder();
        //public abstract ConsultarNombreClaseMinusSiUnder ObtenerConsultarNombreClaseMinusSiUnder();
        //public abstract ConsultarNombreInterfaceINombreinter ObtenerConsultarNombreInterfaceINombreinter();
        //public abstract ConsultarNombreInterfaceInombreinterface ObtenerConsultarNombreInterfaceInombreinterface();
        //public abstract ConsultarNombreInterfaceNombreinter ObtenerConsultarNombreInterfaceNombreinter();
        //public abstract ConsultarNombreMetodoNombre ObtenerConsultarNombreMetodoNombre();
        //public abstract ConsultarNombreMetodoNombreMetodo ObtenerConsultarNombreMetodoNombreMetodo();
        //public abstract ConsultarNombrePaqueteMayus ObtenerConsultarNombrePaqueteMayus();
        //public abstract ConsultarNombrePaqueteMinus ObtenerConsultarNombrePaqueteMinus();
        //public abstract ConsultarDocumentClaseDobleSlash ObtenerFabricaConsultarDocumentClaseDobleSlash();
        //public abstract ConsultarDocumentClaseSlashAsterisco ObtenerFabricaConsultarDocumentClaseSlashAsterisco();
        //public abstract ConsultarDocumentClaseTripleSlach ObtenerFabricaConsultarDocumentClaseTripleSlach();

    }
}